/*
 * BuscarProducto.java
 *
 * Created on 14 de febrero de 2005, 08:28 AM
 */

package administrador;
import java.sql.*;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import javax.swing.table.*;


/**
 *
 * @author  User
 */
public class BuscadorCuentas extends javax.swing.JFrame {
    javax.swing.JTable tabla;
    JScrollPane js;
    Conexion conexion;
    crearDetalle crearD;
   
    String ventana;
  
    /** Creates new form BuscarProducto */
    
    public BuscadorCuentas(Conexion cEnt) {
        
        conexion=cEnt;
        initComponents();
        this.setBounds(100,100,770,350);
        this.setVisible(true);
      
        
    }
    
   
    
     public BuscadorCuentas(Conexion cEnt,crearDetalle creaAEnt) {
        
        crearD=creaAEnt;
        conexion=cEnt;
        initComponents();
        this.setBounds(100,100,770,350);
        this.setVisible(true);
        ventana="crearAsiento";
       
        
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        txt_buscar = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        cb_categoria = new javax.swing.JComboBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Buscador", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(102, 102, 102))); // NOI18N
        jPanel1.setAutoscrolls(true);
        jPanel1.setLayout(null);

        txt_buscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txt_buscarActionPerformed(evt);
            }
        });
        txt_buscar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txt_buscarKeyTyped(evt);
            }
        });
        jPanel1.add(txt_buscar);
        txt_buscar.setBounds(120, 30, 330, 20);

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14));
        jLabel1.setForeground(new java.awt.Color(153, 0, 0));
        jLabel1.setText("Cuenta:");
        jPanel1.add(jLabel1);
        jLabel1.setBounds(40, 30, 70, 20);

        jButton1.setText("MostrarTodos");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jPanel1.add(jButton1);
        jButton1.setBounds(570, 30, 100, 23);

        cb_categoria.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Nombre", "Codigo" }));
        jPanel1.add(cb_categoria);
        cb_categoria.setBounds(460, 30, 110, 20);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
        muestraTodos();
        
    }//GEN-LAST:event_jButton1ActionPerformed

    private void txt_buscarKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txt_buscarKeyTyped
// TODO add your handling code here:
        
        //Si es Enter
        int t=evt.getKeyChar();
        //Busca:
        String itemBuscar=txt_buscar.getText();
        
        if(t==10){
            
            muestraBusqueda(txt_buscar.getText());
            
        }
       
        
        
    }//GEN-LAST:event_txt_buscarKeyTyped
   
    
    public int tomaNumero(){
    int fila=tabla.getSelectedRow();
    System.out.println("La fila seleccionada es: "+fila);
    return fila;
    }
    
    public void muestraTodos(){
       
       txt_buscar.setText(" ");
       ResultSet respuesta=null;
       
       respuesta=conexion.consultarBase("select cod_primernivel as 'PN',cod_segundonivel as 'SN',cod_tercernivel as 'TN',nombre from tercernivel " +
                                        "order by concat(cod_primernivel,cod_segundonivel,cod_tercernivel);");
       

        //Obtengo Filas-Arreglo de Titulos de Columnas
        int filas=conexion.obtenerFilas(respuesta);
        String[] titulosCol=conexion.obtenerColumnas(respuesta);
        //Creo la tabla:
        CrearTabla(filas,titulosCol);
        llenaTabla(respuesta,titulosCol.length,filas);
        
    }
    
    
    
    public void muestraBusqueda(String itemBuscar){
        
        ResultSet respuesta=null;
        
        //Saco codigo de la Categoria:
        int tipoBusqueda=cb_categoria.getSelectedIndex();
        String dato=txt_buscar.getText();
        dato=dato.replace(" ","");
        
        if(tipoBusqueda==1){
         System.out.println("Busca por Codigo");
          String datos[]=dato.split(",");
          String cons1="select cod_primernivel as 'PN',cod_segundonivel as 'SN',cod_tercernivel as 'TN',nombre from tercernivel " +
                       "where cod_primernivel="+datos[0]+" and cod_segundonivel="+datos[1]+" and cod_tercernivel="+datos[2]+" " +
                       "order by concat(cod_primernivel,cod_segundonivel,cod_tercernivel);";
          respuesta=conexion.consultarBase(cons1);
        }
        if(tipoBusqueda==0){
          System.out.println("Busca por Nombre");
          String cons1="select cod_primernivel as 'PN',cod_segundonivel as 'SN',cod_tercernivel as 'TN',nombre from tercernivel " +
                       "where nombre like '%"+dato+"%' " +
                       "order by concat(cod_primernivel,cod_segundonivel,cod_tercernivel);";
          respuesta=conexion.consultarBase(cons1);
        }
               
        //Obtengo Filas-Arreglo de Titulos de Columnas
        int filas=conexion.obtenerFilas(respuesta);
        String[] titulosCol=conexion.obtenerColumnas(respuesta);
        
        //Creo la tabla:
        
        CrearTabla(filas,titulosCol);
        llenaTabla(respuesta,titulosCol.length,filas);
        
    
    }
    
    public void CrearTabla(int filas,String[] titulos){
        
        int columnas=titulos.length;
        String[][] tabla0=new String[filas][columnas];
       
        tabla= new JTable(tabla0,titulos);
        
        //Aqui le especifico para que la tabla acepte valores doubles e int:
        //--------------------------------------------------------------------
        final boolean[] canEdit = new boolean [columnas];
        for(int p=0;p<columnas;p++){
        canEdit[p]=false;
        }
        tabla.setModel(new javax.swing.table.DefaultTableModel(
            tabla0,titulos  
        ) {
           // boolean[] canEdit = new boolean [] { false, false, false, false};

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        //---------------------------------------------------------------------
                   
        //Le doy el evento del LCick del Mouse:
        tabla.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tablaMouseClicked(evt);
            }
        });
        
        //remuevo el JScroll para que no se monte cuando cree el nuevo:
        //*************************************************************
        try{
        jPanel1.remove(js);
        }catch(java.lang.NullPointerException e){}
        //*************************************************************
        
        //Pongo en la tabla:
            js = new JScrollPane(tabla);
                        
            js.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(198, 196, 196)));
            js.setBounds(20, 80, 670, 200);
            js.setVisible(true);
            jPanel1.add(js);
            js.updateUI();
    }
    
     public void llenaTabla(ResultSet r,int columnas,int filas){
        try{
            r.beforeFirst();
            
            int j=0;
            while(r.next()) {
                
                for(int i=0;i<columnas;i++) {
                    
                    Object toma=r.getObject(i+1);
                    //System.out.println("toma valor:"+toma+" * fila:"+j+" * column:"+i);
                    try{
                        tabla.setValueAt(toma,j,i);
                    }catch(java.lang.ArrayStoreException e){
                        System.out.print("Errrrorrr");
                        tabla.setValueAt("null",j,i);
                    }
                }
                
                j++;
            }
        }catch(SQLException sqle){
            System.out.println("Error al mostrar los datos");
            System.err.println(sqle);
        }
        
    }
    
    
     private void tablaMouseClicked(java.awt.event.MouseEvent evt) {
    // Evento del click del mouse sobre la tabla:
         int fila=tabla.getSelectedRow();
         System.out.println("Click en la Fila :"+fila);
         
         if(ventana.equals("crearAsiento")){
         
         crearD.txt_nombre.setText(tabla.getValueAt(fila,3).toString());
         String code=tabla.getValueAt(fila,0).toString()+","+tabla.getValueAt(fila,1).toString()+","+tabla.getValueAt(fila,2).toString();
         crearD.txt_codigo.setText(code);
         //crearAsiento.bt_registrar.setText("Modificar");
         }
        
         dispose();
    }
    
    private void txt_buscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txt_buscarActionPerformed
// TODO add your handling code here:
    }//GEN-LAST:event_txt_buscarActionPerformed
   

    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox cb_categoria;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField txt_buscar;
    // End of variables declaration//GEN-END:variables
    
}
